/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Validation;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author RODRIGO
 */
public class Validacoes {
    /**
         * Objetivo: validar nome informado
         * Retorno: 0 - Nome Inv�lido
         *                      1 - Nome V�lido
         *
         * @param nomeAux
         * @return retorno
         * @autor RODRIGO
         * //Fun��o compile, da classe Pattern, cria um padr�o para a vari�vel padrao
         * //Matcher verifica a exist�ncia de um certo padr�o no par�metro passado
         */

        public int validaNome(String nomeAux){

                try{
        Pattern padrao = Pattern.compile("[A-Za-z].[A-Za-z��������� ]+");
        Matcher pesquisa = padrao.matcher(nomeAux);


        if(pesquisa.matches())
            return 1;
        else{
                System.out.println("\nNome incorreto, informe novamente!\n");
                return 0;
        }
                }catch(NullPointerException e){
                        System.out.println("\nNome incorreto, informe novamente!\n");
            return 0;
                }



    }
        /**
         * Objetivo: validar n�mero de telefone
         * @param telefone
         * @return 0 - Telefone inv�lido
         *                 1 - Telefone v�lido
         */
    public int validaTelefone(String telefone){
        int i,aux1=1;
        char Ctel[];

        try{
        Ctel = telefone.toCharArray();
        /*Verifica se todos os chars da string sao numericos*/

        if(telefone.length() != 8){
            System.out.println("\nTelefone inv�lido, informe novamente\n");
                aux1 =0;
        }
        else{
            for(i=0;i<(telefone.length());i++)
            {
                if ( (Ctel[i]<'0') || (Ctel[i]>'9') )
                aux1 = 0;
            }
        }

        return aux1;

        }catch(NullPointerException e){
                System.out.println("\nTelefone inv�lido, informe novamente\n");
                return aux1;
        }
    }
        
        

/**
         * Objetivo : Validar um CPF
         * @param cpf
         * @return
         *              0 - CPF Inv�lido
         *              1 - CPF V�lido
         */
public int validaCpf (String cpf)
{
    char cpf_real[] = new char[12];
    char cpf2[] = new char[12];
    int num[]=new int[9];
    int x,soma_dv10=0,soma_dv11=0,dv10=0,dv11=0,digitado_10,digitado_11;
    int retorno=1,i,j;
    int contNro[] = new int[11];
    String nros="0123456789";
    char nros2[]=new char[11];

    if((cpf.length()) != 11){
        System.out.println("\nCPF inv�lido, informe novamente.");
        return 0;
    }
    cpf_real = cpf.toCharArray();

    cpf2 = cpf.toCharArray();
    nros2 = nros.toCharArray();

    for(i=0;i<11;i++)
           contNro[i] = 0;

        for(i=0;i<11;i++)
        {
           for(j=0;j<11;j++)
           {
              if(cpf2[i] == nros2[j])
              {
                  contNro[j]++;
                  break;
              }
           }
        }
        for(i=0;i<11;i++)
        {
          if(contNro[i] == 11)

            return 0;
        }

        for( i=0; i<9; i++)
        {
            num[i]=cpf_real[i]-48;        /* Atribui a variavel num os valoreves reais do cpf*/
            soma_dv10+=num[i]*(i+1); /* Efetua a soma da multiplicacao dos digitos por 9,8,7...1 a partir do digito 10*/
        }

        /* Digito 10 e 11 recebidos */

        digitado_10=cpf_real[9]-48;

        digitado_11=cpf_real[10]-48;

         /*--- Digitos verificadores corretos---- */

        dv10=soma_dv10%11;          /* Armazena o Digito Verificador 10 (DV10) */

        /* geracao do digito verificador 11)*/
        if(dv10 == 10)
                dv10=0;
        for ( i=0; i<9; i++)
        {
           soma_dv11+=num[i]*i;
        }
        x=dv10*9;

        soma_dv11+=x;
        dv11=soma_dv11%11;

           // apresentacao de resultados */
        if(dv10==10)
            dv10=0;
        if(dv11 == 10)
                dv11=0;

        if (digitado_10==dv10)
        {
            if (digitado_11!=dv11){
                System.out.println("\nCPF inv�lido, informe novamente.");
                retorno = 0;
            }
        }else
            retorno = 0;

        return retorno;
   }
/*==============================================================================
    Funcao    : valida o email
    Parametros: string do email
    Retorno   : 0 - invalido
                1 - valido
    ==============================================================================*/
    public int validaEmail(String Email)
    {
        int i,j,retorno=0;
        char cemail[];

        cemail = Email.toCharArray();
        /*Procura "@" na string*/
        for(i=0;i<(Email.length());i++)
        {
            if (cemail[i]=='@')
                break;
        }
        /*Procura "." na string*/
        for(j=i;j<(Email.length());j++)
        {
            if (cemail[j]=='.')
            {
                retorno = 1;
            }
        }
        return retorno;
    }
 

    public int validarData(String dateStr)
            throws java.text.ParseException {
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Calendar cal = new GregorianCalendar();

        // gerando o calendar
        cal.setTime(df.parse(dateStr));

        // separando os dados da string para comparacao e validacao
        String[] data = dateStr.split("/");
        String dia = data[0];
        String mes = data[1];
        String ano = data[2];

        // testando se hah discrepancia entre a data que foi
        // inserida no caledar e a data que foi passada como
        // string. se houver diferenca, a data passada era
        // invalida
        if ((new Integer(dia)).intValue() != (new Integer(cal.get(Calendar.DAY_OF_MONTH))).intValue()) {
            // dia nao casou
            return 0;
        } else if ((new Integer(mes)).intValue() != (new Integer(cal.get(Calendar.MONTH) + 1)).intValue()) {
            // mes nao casou
            return 0;
        } else if ((new Integer(ano)).intValue() != (new Integer(cal.get(Calendar.YEAR))).intValue()) {
            // ano nao casou
            return 0;
        }

        return 1;
    }

}
        